In this paper, we study cluster synchronization in networks of coupled non-identical dynamical systems. The vertices in the same cluster have the same dynamics of uncoupled node system but the uncoupled node systems in different clusters are different. We present conditions guaranteeing cluster synchronization and investigate the relation between cluster synchronization and the unweighted graph topology. We indicate that two condition play key roles for cluster synchronization: the common inter-cluster coupling condition and the intra-cluster communication. From the latter one, we interpret the two well-known cluster synchronization schemes: self-organization and driving, by whether the edges of communication paths lie at inter or intra-cluster. By this way, we classify clusters according to whether the set of edges inter- or intra-cluster edges are removable if wanting to keep the communication between pairs of vertices in the same cluster. Also, we propose adaptive feedback algorithms on the weights of the underlying graph, which can synchronize any bi-directed networks satisfying the two conditions above. We also give several numerical examples to illustrate the theoretical results.